iT邦幫忙

2026 iThome 鐵人賽

DAY 5
0

今日目標說明

這幾年 Serverless (無伺服器) 與邊緣運算非常熱門,我們的專案不自己架設龐大的 MySQL 或 PostgreSQL,而是選用極度輕量、基於 libSQL 分支的 Turso 雲端資料庫。今天我們將完成 Turso 的註冊,並在後端建立安全的連線設定。

核心程式碼片段

請先到 Turso 官網 註冊並建立一個新的 Database。取得 Database URL 與 Auth Token 後,我們回到後端專案。

安裝 dotenv 來管理環境變數,以及官方提供的 libsql client

npm install dotenv @libsql/client

在後端根目錄建立 .env 檔案(非常重要:記得將它加入 .gitignore 避免外洩機密):

TURSO_DATABASE_URL=你的_database_url
TURSO_AUTH_TOKEN=你的_auth_token

接著建立 src/db.ts 來設定資料庫連線模組,方便未來其他檔案引用:

// src/db.ts
import { createClient } from "@libsql/client";
import dotenv from "dotenv";

// 載入環境變數
dotenv.config();

export const db = createClient({
  url: process.env.TURSO_DATABASE_URL as string,
  authToken: process.env.TURSO_AUTH_TOKEN as string,
});

【架構決策對比】為什麼選 Turso 而不是傳統關聯式資料庫?

當我們打算在未來將後端部署到 Vercel 這種 Serverless 平台時,資料庫的選擇就必須非常謹慎:

比較項目 Turso (libSQL/SQLite) 傳統資料庫 (如 AWS RDS MySQL) 差異與影響
連線方式 基於 HTTP 協定 基於 TCP 長連線 Serverless 每次呼叫都會啟動新的實體。傳統 TCP 連線建立極慢且耗資源;HTTP 則輕量、隨傳隨斷。
連線數限制 (Connection Pool) 幾乎無限制 (HTTP 無狀態) 非常有限 (通常幾十到幾百個) 如果突發流量讓 Serverless 產生大量實體,傳統 DB 會瞬間發生連線數爆滿 (Too many connections) 導致整個系統崩潰。Turso 完美免疫此問題。
建置成本 超高免費額度 (9GB 空間/十億次讀取) 通常只有前 12 個月免費 (且常有隱藏流量費) 對於 Side Project 來說,0 元且無壓力的營運成本是最強大的後盾!

選用 Turso,我們不僅獲得了關聯式資料庫 (SQL) 的強大查詢能力,更完美適配了現代雲端部署的節奏。

實際畫面截圖

Turso建立資料庫畫面

  1. Turso 建立資料庫畫面

取得Token畫面

  1. 取得 Token 畫面

小結

資料庫連線搞定了!這意味著我們的基礎建設(前端、後端、資料庫)在短短五天內已經全數到位。明天開始,我們將正式設計資料表並開始撰寫 Express 的 API 路由!


上一篇
DAY 4:後端專案建立 (Express + TypeScript)
下一篇
DAY 6:後端第一支 API 實作 (RESTful 路由設計)
系列文
就決定是你了!打造寶可夢持有追蹤系統 (React x Express)7
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言